package br.edu.unipampa.rpg;

import java.util.Scanner;

public class Narrativa {

    public static void Separador() {
        System.out.println("====================================================================================");
    }

    public static void inicio(Personagens nome) {
        nome.digitarNome();
        System.out.println("" + nome.getDescricao());
        System.out.println("Seus objetos são: " + nome.getRecurso());
    }

    public static void continuar(String mensagem, String escolha, String sim, Personagens nome, Cenarios proxCenario) {
        Scanner tec = new Scanner(System.in);
        System.out.println(mensagem);
        System.out.println(escolha);
        String n = tec.nextLine();
        if (n.equalsIgnoreCase(sim)) {
            nome.setPosicao_atual(proxCenario.getPosicao_cenario());
        }
    }

    public static void Escolhas(String escolha1, String escolha2, Cenarios cenarioAtual, Cenarios proxCenario, Personagens nome, Mapa mapa) {
        System.out.println("O que fazer?");
        Separador();
        Scanner tec = new Scanner(System.in);
        System.out.println(escolha1);
        System.out.println(escolha2);
        String a = tec.nextLine();

        if (a.equalsIgnoreCase(escolha2)){
            mapa.usar_mapa(nome, cenarioAtual);
        }

        if (a.equalsIgnoreCase(escolha1)){
            nome.setPosicao_atual(proxCenario.getPosicao_cenario());
        }
    }

    public static void escolhecaminho(String caminho1, String caminho2, Personagens nome, Cenarios c1, Cenarios c2) {
        Scanner tec = new Scanner(System.in);
        Separador();
        System.out.println("Que caminho deseja escolher?");
        System.out.println(caminho1);
        System.out.println(caminho2);
        String g = tec.nextLine();
        if (g.equalsIgnoreCase(caminho1)) {
            nome.setPosicao_atual(c1.getPosicao_cenario());
        }
        if (g.equalsIgnoreCase(caminho2)) {
            nome.setPosicao_atual(c2.getPosicao_cenario());
        }
    }

    public static void main(String[] args) {
        System.out.println("========== Game Aventura RPG ==========");
        Scanner tec = new Scanner(System.in);
        // *criação de personagens*
        Personagens nome = new Personagens("prever tempo", 0f, "Mensageiro, Gaúcho guapo criado na Fronteira Oeste da 3º região tradicionalista" );
       nome.setRecurso("Adaga, cantil, mapa");

        Personagens General = new Personagens( "", 10f , " Presidente da República Federativa do Rio Grande do Sul - Alegrete! ");
        General.setNome("General Bento Gonçalves");
        General.setMensagem("Muito bem mensageiro, tu completaste tua missão");
        //criaçao dos cenarios
        Cenarios casa = new Cenarios("Casa do mensageiro", "Local aonde inicializamos a história ", 0f);
        Cenarios posto = new Cenarios("Posto de comando avançado de vigília", "Um dos postos de comando aonde tu  iniciaras tua jornada", 1f);
        Cenarios estrada = new Cenarios("Uma estrada qualquer", "Estrada entre o posto de comando e uma encruzilhada", 2f);
        Cenarios poco = new Cenarios("Poço ", "Um poço que está cheio de água ", 3f);
        Cenarios encru = new Cenarios("Encruzilhada ", "Estrada aonde existem 2 bocas de saída ", 4f);
        Cenarios entra = new Cenarios("Entrada do deserto ", "Local aonde tu partes para dentro do deserto", 5f);
        Cenarios estra = new Cenarios("Estrada do Deserto ", "Estrada principal por onde tu entraras no deserto", 5.1f);
        Cenarios meio = new Cenarios("Meio do Deserto ", "Meio do deserto exatamente", 5.2f);
        Cenarios descida = new Cenarios("Descida do deserto ", "Baita desfiladeiro..", 5.3f);
        Cenarios saida = new Cenarios("Fim do deserto ", "Fim do deserto ", 5.4f);
        Cenarios charque = new Cenarios("Charco", "Região de manancial cheio de banhados,rios corredeiras e poços", 6f);
        Cenarios charque1 = new Cenarios("Escolha das passagens", "Escolha entre duas passagens", 6.1f);
        Cenarios charqueNorte = new Cenarios("Passagem norte do charco", "Passagem que é segura apenas no tempo seco", 6.2f);
        Cenarios charqueSul = new Cenarios("Passagem sul do charco", "Passagem que é segura apenas no tempos de chuva", 6.3f);
        Cenarios rio = new Cenarios("Rio Ibirapuitã", "Grande rio que só é possível atravessar á canoa nos tempos de chuva", 6.4f);
        Cenarios fimCharco = new Cenarios("Final do charco", "Fim do charco", 6.5f);
        Cenarios Qfim = new Cenarios("Estrada final", "Uma estrada que leva até a cidade, 4ª capital ", 7f);
        Cenarios Hellgrete = new Cenarios("Alegrete Grande", "Cidade de Alegrete ", 8f);
        Cenarios Cede = new Cenarios("Sede do município ", "Local aonde localiza-se o General dos Pampas", 9f);

        //criaçao dos itens
        Itens agua = new Itens("Água", "Água usada para encher o cantil");
        agua.setConsumivel(true);

        Itens cantil = new Itens("Cantil", "Usado para armazenar água");
        cantil.setCantil_cheio(true);
        cantil.setConsumivel(false);

        Itens cantil2 = new Itens("Cantil", "Usado para armazenar água");
        cantil2.setCantil_cheio(false);
        cantil2.setConsumivel(false);

        //criaçao do mapa
        Mapa mapa = new Mapa();
        //criacao das armas
        Armas adaga = new Armas("Adaga", "Adaga pequena mas muito afiada!", 20);
        //criar desafios
        Desafios de = new Desafios();
        //inicio do game
        inicio(nome);
        Separador();

        do {
            System.out.println(nome.getNome() + " voce recebeu um chamado, e precisar ir até o posto avançado de vigilia");
            Escolhas("Continuar", "Mapa", casa, posto, nome, mapa);
        } while (nome.getPosicao_atual() == 0);

        do {
            Separador();
            mapa.usar_mapa(nome, posto);
            System.out.println(nome.getNome() + " você foi incumbido de entregar uma importante correspondência ao presidente da república, o qual se encontra na sede do município. ");
            Separador();
            continuar("A jornada deverá ser a pé, pois um cavalo chamaria muita atenção."
                    + " A jornada do posto avançado de vigília até a sede da cidade será de aproximadamente 10 dias e sempre a noite para assim passar despercebido.", "Deseja continuar?", "sim", nome, estra);
        } while (nome.getPosicao_atual() == 1);

        do {
            Separador();
            mapa.usar_mapa(nome, estrada);
            System.out.println("A jornada vai ser longa, por sorte você trouxe um cantil cheio de água, uma adaga e um velho mapa da região!");
            System.out.println("Essa estrada parece nunca terminar, você avista uma luz ao longe ");
            Separador();
            Escolhas("Continuar", "mapa", estra, poco, nome, mapa);
        } while (nome.getPosicao_atual() == 2);
        do {
            Separador();
            mapa.usar_mapa(nome, poco);
            System.out.println("Esse poço está cheio de água, pode ser util, parece haver algo caido ao seu lado");
            System.out.println("O que deseja fazer?");
            Separador();
            System.out.println("Verificar");
            System.out.println("Mapa");
            System.out.println("Continuar");
            String a = tec.nextLine();
            if (a.equalsIgnoreCase("Mapa")) {
                mapa.usar_mapa(nome, poco);
            }
            if (a.equalsIgnoreCase("continuar")) {
                nome.setPosicao_atual(4);
            }
            if (a.equalsIgnoreCase("verificar")) {
                Separador();
                System.out.println("Você achou um " + cantil2.getNome_recurso());
                Separador();
                System.out.println("Deseja pegar?");
                System.out.println("sim");
                System.out.println("nao");
                String c = tec.nextLine();
                if (c.equalsIgnoreCase("sim")) {
                    Separador();
                    System.out.println("Voce pegou 1 " + cantil.getNome_recurso());
                    nome.setCantil2(true);
                    Separador();
                    System.out.println("O que deseja fazer?");
                    Separador();
                    System.out.println("Mapa");
                    System.out.println("Continuar");
                    System.out.println("Encher cantil");
                    String b = tec.nextLine();
                    if (b.equalsIgnoreCase("Encher cantil")) {
                        cantil2.setCantil_cheio(true);
                        Separador();
                        System.out.println("Tu encheste o cantil");
                        Separador();
                        Escolhas("Continuar", "Mapa", poco, encru, nome, mapa);
                    }
                }
            }
        } while (nome.getPosicao_atual() == 3);

        do {
            Separador();
            mapa.usar_mapa(nome, encru);
            System.out.println("Você chegou numa encruzilhada veia brutal, e precisa escolher entre dois caminhos");
            System.out.println("O que você deseja fazer? ");
            System.out.println("Mapa");
            System.out.println("Escolher caminho");
            String d = tec.nextLine();
            if (d.equalsIgnoreCase("mapa")) {
                mapa.usar_mapa(nome, encru);
            }
            if (d.equalsIgnoreCase("escolher caminho")) {
                escolhecaminho("Deserto", "Charco", nome, entra, charque);
            }
        } while (nome.getPosicao_atual() == 4);

        if (nome.getPosicao_atual() == 5) {
            
                Separador();
                mapa.usar_mapa(nome, entra);
                nome.setPosicao_atual(5.1f);
                      
                Separador();
                mapa.usar_mapa(nome, estra);
                nome.setPosicao_atual(5.2f);
                  Separador();
                mapa.usar_mapa(nome, meio);
                de.desafio1(cantil);
                nome.setPosicao_atual(5.3f);
           
           do {
                Separador();
                mapa.usar_mapa(nome, descida);
                continuar("", "Continuar ? (sim ou não)", "sim", nome, saida);
                System.out.println("Tu te esgualepaste no chão, mas como um Índio véio galo, sobreviveu firme e forte!");
            } while (nome.getPosicao_atual() == 5.3f);
                Separador();
                mapa.usar_mapa(nome, saida);
                de.desafio1(cantil2);
                nome.setPosicao_atual(7);

            }
            
            if (nome.getPosicao_atual() == 6) {
                    Separador();
                    mapa.usar_mapa(nome, charque);
                    nome.setPosicao_atual(6.1f);
                    
                do {
                    Separador();
                    mapa.usar_mapa(nome, charque1);
                    System.out.println("O que você deseja fazer? ");
                    System.out.println("Mapa");
                    System.out.println("Escolher caminho");
                    System.out.println("Usar habilidade");
                    String d = tec.nextLine();
                    if (d.equalsIgnoreCase("usar habilidade")) {
                        System.out.println(nome.usar_habilidade());
                    }
                    if (d.equalsIgnoreCase("mapa")) {
                        mapa.usar_mapa(nome, charque1);
                    }
                    if (d.equalsIgnoreCase("Escolher caminho")) {
                        escolhecaminho("Norte", "Sul", nome, charqueNorte, charqueSul);
                    }
                } while (nome.getPosicao_atual() == 6.1f);


                if (nome.getPosicao_atual() == 6.2f) {
                        Separador();
                        mapa.usar_mapa(nome, charqueNorte);
                        de.desafio2(charqueNorte, nome);
                        nome.setPosicao_atual(6.5f);
                    
                }
                if (nome.getPosicao_atual() == 6.3f) {
                    do {
                        Separador();
                        mapa.usar_mapa(nome, charqueSul);
                        System.out.println("Tu achaste um rio com uma canoa na margem!");
                        Escolhas("Usar canoa", "Mapa", charqueSul, fimCharco, nome, mapa);
                    } while (nome.getPosicao_atual() == 6.3f);

                        Separador();
                        mapa.usar_mapa(nome, rio);
                        de.desafio3(rio, nome);
                        nome.setPosicao_atual(6.5f);
              }
                do {
                    Separador();
                    mapa.usar_mapa(nome, fimCharco);
                    continuar("", "Deseja continuar? (sim ou nao)", "Sim", nome, Qfim);
                } while (nome.getPosicao_atual() == 6.5f);
            }
                Separador();
                mapa.usar_mapa(nome, Qfim);
                System.out.println("Finalmente tua missão chegas ao fim");
                nome.setPosicao_atual(8);
            do {
                Separador();
                mapa.usar_mapa(nome, Hellgrete);
                continuar("Tu chegaste na capital da tradição", "Deseja entrar na Sede do General?", "Sim", nome, Cede);
            } while (nome.getPosicao_atual() == 8);

            if (nome.getPosicao_atual() == 9) {
                mapa.usar_mapa(nome, Cede);
                System.out.println(General.getNome() + ":" + General.getMensagem());
            }
        }
    }
